namespace Machinery.Cogs.Interfaces
{
    public interface IPathCog
    {
        /// <summary>
        /// Get the path of the web applicaton.
        /// </summary>
        /// <returns></returns>
        string GetApplicatonRootDirectory();

        /// <summary>
        /// This is a wrapper for UrlHelper.RouteUrl. 
        /// Exists for mocking purposes - UrlHelper 
        /// is almost impossible to mock.
        /// </summary>
        /// <param name="routeValues">The routevalues that you want to pass to RouteUrl.</param>
        /// <returns>An url.</returns>
        string RouteUrl(object routeValues);

        /// <summary>
        /// This is a wrapper for UrlHelper.RouteUrl. 
        /// Exists for mocking purposes - UrlHelper 
        /// is almost impossible to mock.
        /// </summary>
        /// <param name="routeName">The routeName that you want to pass to RouteUrl.</param>
        /// <param name="routeValues">The routevalues that you want to pass to RouteUrl.</param>
        /// <returns>An url.</returns>
        string RouteUrl(string routeName, object routeValues);

    }
}